package com.im.common.enums;

/**
 * 服务器地址获取策略枚举
 */
public enum ImUrlRouteWayEnum {

    /**
     * 随机
     */
    RAMDOM(1, "com.im.common.route.algorithm.random.RandomHandle"),

    /**
     * 轮训
     */
    LOOP(2, "com.im.common.route.algorithm.loop.LoopHandle"),

    /**
     * HASH
     */
    HASH(3, "com.im.common.route.algorithm.consistenthash.ConsistentHashHandle"),
    ;

    private int code;
    private String clazz;

    /**
     * 不能使用默认的enumType，因为本枚举是类形式封装
     * 示例：b= enumType.values()[i];
     *
     * @param ordinal
     * @return
     */
    public static ImUrlRouteWayEnum getHandler(int ordinal) {
        for (int i = 0; i < ImUrlRouteWayEnum.values().length; i++) {
            if (ImUrlRouteWayEnum.values()[i].getCode() == ordinal) {
                return ImUrlRouteWayEnum.values()[i];
            }
        }
        return null;
    }

    ImUrlRouteWayEnum(int code, String clazz) {
        this.code = code;
        this.clazz = clazz;
    }

    /**
     * 获取类名
     *
     * @return 类名
     */
    public String getClazz() {
        return clazz;
    }

    /**
     * 获取代码
     *
     * @return 代码
     */
    public int getCode() {
        return code;
    }
}
